perm filename S1X.F4[P11,LCS]1 blob sn#426316 filedate 1979-03-19 generic text, type T, neo UTF8
C  THIS PROGRAM IS THE PROPERTY OF LELAND SMITH, PROFESSOR OF MUSIC
C  AT STANFORD UNIVERSITY.  IT MAY NOT BE COPIED OR ALTERED IN ANY
C  WAY WITHOUT WRITTEN PERMISSION OF THE AUTHOR.


C  1/79 **********  SCORE - PDP11 VERSION ********** 

C   THIS PROGRAM WRITES NOTE LISTS FOR THE PDP11 MUSIC V SOUND
C   GENERATION PROGRAM.
C   IF # OF INSTS IS CHANGED, ALSO CHANGE # IN 'INFO'('HELP') FORMAT.
C   LOAD 'S1' WITH S2,SCANR

	COMMON /DEVS/ID1,ID21,JTYPE,ID23,ID20
	COMMON /Q/ BNW(200),NWZ /INS/RINST(27),BG(60) /TYP/JOUT,LN
	1 /ITYP/ITYP,JED 
C  SEE LABEL 1774 AND BELOW RE. BUFFER LIMIT.
	COMMON/VV/LIMIT,V(2000) /A/NP(27),XT(27), FRM(80),INVIS(27)
	DIMENSION LIST(1),JNP(80)
C   WITH VX,IOUT AT 70 AND FRM AT 80 OK FOR ONLY 
C   40 LIT CHARS + 30 PARAMS PER INST.
C   60 BG TIMES AVAILABLE. 

C 2ND NUM IN IPT=NUMP+2. (NUMPY) 
	COMMON /PCIP/ PCH(27,33) /ALPH/IALPH(14),ISCA(12),IDAT(11)
	1 /INP/INP(154) 
CC	/IPT/ IPT(27,32)
CC	COMMON/P/P(30) 
C NUMP=30 = TOTAL NUMBER OF PARAMETERS NOW AVAILABLE. RAN.DEV. IS NUMP+1
	COMMON J,L /DUR/DUR(27) /NUMP/NUMP
	1 /BLA/IBLA,KSLA,ISEMI,MINUS,ISTAR,ICOMM,ICOL,IQUES,ILESS,IQT
	1/E/IQ(27),KL,X,ZPAR,KA,LK,NNUM,JJ,JA,ISUB,NFLG
	1 ,VX(70),IAMP,K,KN,M,ML,CODE
	COMMON/B/MOT,PR,T5,NINS,I,RA,KZY,NWX,INONLY,MX,
	1 Y,Z,ISLAC,MZ,N,IDALL,JC,JG,RB,IJ,IX,BW,NL,RC,W,
	1 ZZ,CHN,YY 
	1 /D/TF,AMPFAC,OP1,DURX,IXIN,FLNM
	1  /C/LPAR,IPRN,QX,IRETRO,INVRT,ICON,LCNT,
	1 PARENS,JZ,BY,MLX,IZ,ALL,JD,LEND,QTS,ITMP,
	1 LP,ILIT,NLIT,KTMP,IC,RAX,RD,IA
C  /C/=26
	EQUIVALENCE (LIST,FRM(3)),(JN,JNP,INP),(IEE,ISCA(5)),(IDD,ISCA(3))
	1,(ITT,ISCA(11)),(III,IALPH(2)),(IYY,IALPH(14)),(JN2,JNP(2)),
	1(JN3,JNP(3)),(JN4,JNP(4)),(INN,IALPH(7)),(IOO,ISCA(4)),(IFF,
	1 ISCA(6)),(IHH,IALPH(1)),(ILL,IALPH(5)),(IPP,ISCA(2))
	DATA KZY/27/,ISEMI/';'/,LIMIT/2000/,NUMP/30/,KSLA/'/'/,IQT/'"'/
	1,MINUS/'-'/,ISTAR/'*'/,ICOMM/','/,ICOL/':'/,ILESS/'<'/
C  IAA=A  IDD=D  IEE=E  IF=F  INN=N  IPP=P  ISS=S  ITT=T
	DATA IBLA/' '/,TYPE/'TYPE'/,TYPD/'TYPD'/,
	1 HELP/'HELP'/,IQUES/'?'/,EDIT/'EDIT'/
	1 ,ISCA/'C','P','D','O','E','F','Z','G','S','A','T','B'/
	1 ,IDAT/'0','1','2','3','4','5','6','7','8','9','.'/
	1,IALPH/'H','I','J','K','L','M','N','Q','R','U','V','W','X'
	1,'Y'/


	ITYP=0
	JOUT=JTYPE
C*** ABOVE CAUSE TYPEOUT ON SCREEN (PUT IN PROMPT FOR THIS LATER.)
      LPAR=0
      IPRN=0
      QX=0
      MOT=0
      IRETRO=-1 
      INVRT=-1
      ICON=-1
      LCNT=1
      IPAREN=0
      JZ=1  
      IAMP=0
C  IAMP IS 'BLANK LINE'FLAG ON PP1-3.
      T5=0  
      NINS=0
      K=0
      IDALL=-1
      QTS=-1.
      NWZ=1
      BNW(1)=0
      I=1
      KL=0  
      TP=0  
      RA=0  
      CHN=0 
      DO 127 K=1,77,3
127      LIST(K)=0
C  INITIALIZES MOTIVIC LIST FOR ERROR FINDING ROUTINE.
      NWX=0
      BY=-1
      DO 1128 K=1,KZY     
      INVIS(K)=0
      RINST(K)=0
      NP(K)=0
      IQ(K)=0
      DO 1128 L=1,32    
1128   PCH(K,L)=0 

      ITYP=-1
      JED=-1
2112      WRITE(JTYPE,8002)
	READ(JTYPE,1)JNP
	IF(JNP(1).NE.IBLA)GO TO 4112
	IF(FLNM.EQ.0)GO TO 2112
	RNAM=FLNM
C REMEMBERS LAST FILE NAME GIVEN.
	GO TO 129
4112	CALL PACKER(RNAM,JNP)
C**** ONLY UP TO 4 LETTERS IN FILE NAMES.
999      IF(RNAM.NE.EDIT)GO TO 3112
      JED=0
      GO TO 2112
C  'EDIT' GOES TO EDIT MODE
3112  IF(RNAM.NE.TYPE)GO TO 128
      ITYP=0
	FLNM=TYPD
C***************** OPEN AN OUTPUT FILE *********
	CALL DISKO(ID20,FLNM,0)
C KOUT=DEVICE NUMBER, FLNM=FILE NAME, 0=OUTPUT, (-1=INPUT)
      CALL READIT
C******* IS A5 AVAILABLE?? *************
1   	 FORMAT(80A1)
8002      FORMAT(' TYPE FILE NAME--  '$)
300	FORMAT(I,3F)

128	IF(RNAM.NE.HELP)GO TO 129
C *** NO HELP YET***
129        FLNM=RNAM
C*********** OPEN AN INPUT FILE ******************
	CALL DISKO(ID23,FLNM,-1)

	CALL OUTINF
C OUTINF IS A DUMMY IF USING 2-PART SCORE. WITH 1-PART SCORE IT PROMPTS
C FOR OUTPUT INFO.
	CALL READIT

      END


C11 **** THIS NEXT MUST BE CHANGED TO PACK 4 CHARS. INTO DBL PREC. INT. WD.
	SUBROUTINE PACKER(NAM,INP)
	COMMON /BLA/IBLA,KSLA,ISEMI,MINUS,ISTAR,ICOMM,ICOL,IQUES,ILESS
CQQ	DOUBLE PRECISION NAM
	DIMENSION INP(1),KNM(5)
	DATA KK/128/,LL/"377777777777/,JJ/"2000000000/
	1 , MM/"774000000000/

CC	LEND=0
	NAM=0  
	DO 1 J=1,80
	N=INP(J)
1	IF(N.EQ.IBLA.OR.N.EQ.ISEMI.OR.N.EQ.KSLA)GO TO 2
2	II=J
	J=J-1
	IF(N.EQ.KSLA)II=J
C TO CATCH "TEMPO/11 72 120/" ETC.
	N=J
	IF(J.GT.4)N=4
	DO 3 M=80,1,-1
3	IF(INP(M).NE.IBLA)GO TO 4
C BLANK LINE, GO BACK
	RETURN
4	DO 10 K=1,5
	IF(K.GT.N)GO TO 11
	KNM(K)=INP(K)
	GO TO 10
11	KNM(K)=IBLA
10	CONTINUE
C N=WDCNT OF INST NAME
	DO 12 K=5,1,-1
	NAM=NAM .OR. (KNM(K) .AND. MM)
	IF (K.EQ.1)GO TO 70
17	IF (NAM.GE.0)GO TO 13
	NAM = (( NAM .AND. LL)/KK) .OR. JJ
	GO TO 12
13	NAM = NAM / KK
12	CONTINUE

70	IF(M.LE.J)RETURN
C JUMP IF ONLY A NAME
	DO 7 I=1,M-II
7	INP(I)=INP(I+II)
	DO 8 I=M-J+1,M
8	INP(I)=IBLA
	END